cout

深入理解C++中public、protected及private用法

廉价感情. 提交于 2020-02-17 01:54:05
这篇文章主要介绍了C++中public、protected及private用法,对于C++面向对象程序设计来说是非常重要的概念,需要的朋友可以参考下 初学C++的朋友经常在类中看到public,protected,private以及它们在继承中表示的一些访问范围,很容易搞糊涂。今天本文就来十分分析一下C++中public、protected及private用法。相信对于大家深入掌握C++程序设计会有很大的帮助。 这里我们首先要明白下面几点。 1.类的一个特征就是 封装 ,public和private作用就是实现这一目的。所以: 用户代码(类外)可以访问public成员而不能访问private成员;private成员只能由类成员(类内)和友元访问。 2.类的另一个特征就是 继承 ,protected的作用就是实现这一目的。所以: protected成员可以被派生类对象访问,不能被用户代码(类外)访问。 现来看看如下示例: #include<iostream> #include<assert.h> using namespace std; class A{ public: int a; A(){ //构造函数 a1 = 1; a2 = 2; a3 = 3; a = 4; } void fun(){ cout << a << endl; //正确 cout << a1 << endl;

[PAT] A1019 General Palindromic Number

 ̄綄美尐妖づ 提交于 2020-02-16 21:36:27
【题目】 https://pintia.cn/problem-sets/994805342720868352/problems/994805487143337984 题目大意:给定一个N和b,求N在b进制下,是否是一个回文数(Palindromic number)。其中,0<N, b<=10 ^ 9 【思路】 将n转为b进制下的数字,存储到vector<int>中 ,判断数组两端元素是否全部相等即可。可以倒序存储,不影响回文数的判断。 int最大约为2.14 * 10 ^ 9,不必担心int越界。 【坑】 b进制下的数字可能大于10,不能用字符串存储。用字符的话,数字+'0'可能会超出ascii表示的范围,测试点4过不了。 【代码】 1 #include<iostream> 2 #include<vector> 3 using namespace std; 4 int main() 5 { 6 int num, base; 7 cin >> num >> base; 8 vector<int>output; 9 while (num) 10 { 11 output.push_back(num % base); 12 num = num / base; 13 } 14 bool pal = true; 15 for (int i = 0; i < output.size()/2; i

how can i use cout<<“hello world”; without using ; at the end of the line

前提是你 提交于 2020-02-16 13:14:54
问题 I want to display hello world message in c++ without using semicolon. how can I do that? Is it possible? I have tried it inside if else block like if(true) { cout<<"hello world" } but it does not work like that. 回答1: if (cout << "hello world") {} 回答2: You can put it as the condition: if (std::cout << "hello world") {} 回答3: You can use if , for or while , maybe more. if(std::cout << "Hello World") { } while(std::cout << "Hello World" && false) { } // && false to loop only once for(std::cout <<

STL迭代器

六月ゝ 毕业季﹏ 提交于 2020-02-16 11:21:13
迭代器 迭代器(iterator)是一种抽象的设计概念,现实程序语言中并没有直接对应于这个概念的实物。在<>一书中提供了23中设计模式的完整描述,其中iterator模式定义如下:提供一种方法,使之能够依序寻访某个容器所含的各个元素,而又无需暴露该容器的内部表示方式。迭代器的设计思维-STL的关键所在,STL的中心思想在于将容器(container)和算法(algorithms)分开,彼此独立设计,最后再一贴胶着剂将他们撮合在一起。 迭代器的种类: 输入迭代器 提供对数据的只读访问 只读,支持++、==、!= 输出迭代器 提供对数据的只写访问 只写,支持++ 前向迭代器 提供读写操作,并能向前推进迭代器 读写,支持++、==、!= 双向迭代器 提供读写操作,并能向前和向后操作 读写,支持++、–, 随机访问迭代器 提供读写操作,并能以跳跃的方式访问容器的任意数据,是功能最强的迭代器 读写,支持++、–、[n]、-n、<、<=、>、>= 举个例子: # include <iostream> # include <vector> # include <algorithm> # define _CRT_SECURE_NO_WARNINGS using namespace std ; // STL中的容器算法迭代器 void test01 ( ) { vector < int > v ;

C++中的类型识别

你。 提交于 2020-02-16 01:14:58
文章目录 1 C++中的类型识别 1.1 类型识别的基本概念 1.2 利用多态得到动态类型 1.3 typeid关键字 1 C++中的类型识别 1.1 类型识别的基本概念 在面向对象中可能出现下面的情况: 基类指针指向子类对象。 基类引用成为子类对象的别名。 静态类型和动态类型的概念: 静态类型:变量(对象)自身的类型。 动态类型:指针(引用)所指向对象的实际类型。 1.2 利用多态得到动态类型 利用多态得到动态类型: 在基类中定义虚函数返回具体的类型信息。 所有的派生类都必须实现类型相关的虚函数。 每个类中的类型虚函数都需要不同的实现。 编程实验:动态类型识别 # include <iostream> # include <string> using namespace std ; class Base { public : virtual string type ( ) { return "Base" ; } } ; class Derived : public Base { public : string type ( ) { return "Derived" ; } void printf ( ) { cout << "I'm a Derived." << endl ; } } ; class Child : public Base { public : string

双链表

时光怂恿深爱的人放手 提交于 2020-02-15 18:46:18
1 #ifndef _LIST_H_ 2 #define _LIST_H_ 3 //虚基类 4 template<class ElemType> 5 class List 6 { 7 public: 8 List() {}; 9 virtual ~List() {}; 10 virtual void Clear() = 0;//清空数据结构 11 virtual void Insert(const int& i, const ElemType& X) = 0;//插入元素 12 virtual void ReMove(const int& i) = 0;//移除指定位置的元素 13 virtual void Erase(const ElemType& X) = 0;//删除表中所有X元素 14 virtual int Search(const ElemType& X) const = 0;//搜索某个元素 15 virtual void Traverse() const = 0;//遍历数据结构 16 virtual ElemType Visit(const int& i)const = 0;//访问某个元素 17 }; 18 #endif // !_LIST_H_ List.h 1 #ifndef __DLINKLIST_H__ 2 #define __DLINKLIST_H__

C++初学者的笔记(01)

不打扰是莪最后的温柔 提交于 2020-02-15 00:43:12
1:如果cout的输出是科学计数法,怎么使他变成小数的形式输出 即控制cout的输出 在cout的语句前面加一句话 { cout<<fixed; cout<<要显示的数字; } 2: 控制显示的小数的位数 cout setprecision(2); 在cout的语句前面加个语句,括号内的数字为小数点后的位数。 还要引入一个控制符文件#include 3: setw(x)设置前面的宽度,要引入头文件#include 4:sizeof 用来测量数据类型的长度 例如:cout<<sizeof(double)<<endl; 5: #include<windows.h> SetConsoleTitle(“德玛西亚英雄盖伦”) 6:char类型占8位,1个字节 7:typedef定义类型的功能 例如:typedef int zhengxing //将int 类型的名字改成zhengxing, 以后zhengxing就是以前的int类型 8: i++ 计算完成再自身加1,++i 自身立马加1,然后再进行计算 来源: CSDN 作者: XDU_Chilson 链接: https://blog.csdn.net/XDU_Chilson/article/details/104319423

面向对象程序设计寒假作业3

狂风中的少年 提交于 2020-02-14 14:45:11
面向对象程序设计寒假作业3 面向对象程序设计第二次作业 这个作业属于哪个课程 2020年面向对象程序设计 这个作业要求在哪里 面向对象设计寒假作业3 这个作业的目标 继续完成作业二的编程题,优化架构,思考代码的拓展性,可以参考现有的编程语言,把这些适当的内容加入。 GITHUB仓库 JudgementZero 编程题要求: 优化架构,思考代码的拓展性,比如需要增加其他功能, 如选择,循环语句,参考现有的编程语言扩大数字范围, 支持负数。 在还未着手写相应拓展代码时想应拓展数字范围支持上 百上千上万,以及负数拓展,原函数拓展性属实差劲通 逐步判断输入汉字处理,以及对不同的数字得分类处理 每拓展范围便要求添加大量对拓展范围数字的处理,如 和对拓展范围内的汉字数字输入后逐个字进行转换属实 使得整体编写效率低下,全局变量定义过多导致难以调 试,最终也仅做到拓展到上百,以及负九十九内的负数 还是在大量删改添加的情况下也仅能拓展小范围。 #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<cstdlib> using namespace std; int sum_Person = 0; struct Person_info { int money; char Person_name[20]

智能指针类模板

老子叫甜甜 提交于 2020-02-14 01:48:24
文章目录 1 智能指针介绍 1.1 智能指针的意义 1.2 STL中的智能指针 1.3 Qt中的智能指针 2 创建智能指针类模板 1 智能指针介绍 1.1 智能指针的意义 智能指针具有如下意义: 现代C++开发库中最重要的类模板之一。 C++中自动内存管理的主要手段。 能够很大程度上避开内存相关的问题。 1.2 STL中的智能指针 STL中的智能指针auto_ptr: 生命周期结束时,销毁指向的内存空间。 不能指向堆数组,只能指向堆对象(变量)。 一片堆空间只属于一个智能指针对象。 多个智能指针对象不能指向同一片堆空间。 编程实验:auto_ptr使用初探 # include <iostream> # include <string> # include <memory> using namespace std ; class Test { string m_name ; public : Test ( const char * name ) { cout << "Hello, " << name << "." << endl ; m_name = name ; } void print ( ) { cout << "I'm " << m_name << "." << endl ; } ~ Test ( ) { cout << "Goodbye, " << m_name << ".

C++输入输出流学习笔记

给你一囗甜甜゛ 提交于 2020-02-13 04:12:16
自己之前在学习C++ 的时候从来没有系统地学习过输入输出流,眼看各种面试就要蜂拥而来,不禁一慌,赶紧拿出本C++ Primer Plus来看一下,自己写一些小程序测试一下。让自己对cin, cout有更深的认识。 1.cout进行输出 cout<< 可以识别C++中所有的基本类型,对应不同类型的参数会采用不同的原型。函数最终返回一个 ostream &即引用类型,所以输出可以通过<<连接起来,可以 cout<< xxx << xxx << xxx; ostream还为下面的指针类型定义了插入操作符函数: const signed char * ; const unsigned char * ; const char * ; void * 因为C++ 用指向字符串存储地址的指针来表示字符串,因此用cout来输出 char *, signed char *, unsigned char *,最终都会输出整个字符串 如果希望输出的是字符串的首地址需要将 char * 转换为 void * 来输出。 char * amount = "dozen"; cout<< amount; //输出dozen字符串 cout<<(void*)amount; //输出dozen字符串的首地址 ostream除了<< 操作之外还提供了put() 和write() 方法,前者用于显示字符,后者用于显示字符串