c++第二节课
来源:互联网 发布:蓝月传奇淘宝礼包 编辑:程序博客网 时间:2024/05/20 05:08
1.没有public就默认为private;
public ,private,protected 在class类里面可以出现多次
public:public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用
private: 只能被该类的成员函数访问,类外的其他函数则不能;
protected:只能被该类的成员函数和派生类的成员函数访问。
构造函数:C++中定义了一种特殊的初始化函数,称为构造函数;当对象被调用时,构造函数自动调用;
构造函数名字与类名相同,也没有返回类型和返回值;
对象在生成过程中通常需要初始化变量或分配动态内存,用构造函数。
构造函数的重载:参数类型,个数不同;
析构函数: 析构函数,是在对象被删除前由系统自动执行它作清理工作。
程序有哪些段:??????
5段:代码段(text),数据段(date),BSS,堆段(heap),栈(stack)
前三段为组成可执行的文件
代码段:二进制文件
数据段:已初始化的全局变量/静态变量,常量
BSS:未初始化的全局变量/静态变量
heap:动态分配
stack:函数参数,局部变量值,
指针只有在分配内存之后才能堆指针进行取值操作,指针操作完需要进行delete p;
析构函数的运行顺序与定义顺序相反,先定;义的最后析构,最后定义的最先析构;
malloc和new是在堆上进行操作
给数组赋值字符串需要strcpy函数,不能直接=
char arr[20]= {0};
strcpy(arr,"hello");
对于指针,可以直接把字符串赋值给他
char *ptr;
ptr = "hello"
static函数只能访问static成员;
下面程序打印为
zhou,20
dong,30
zhou,20
m_total相当于一个全局变量,不管stu1还是stu2都是公用这个m_total
static类里申明类外定义
- class Student{
- private:
- char *m_name;
- public:
- Student(char *name);
- void show();
- static int m_total;
- };
- Student::Student(char *name)
- {
- m_name = name;
- }
- void Student::show()
- {
- cout<<m_name<<","<<m_total<<endl;
- }
- int Student::m_total = 0;
- int main()
- {
- Student stu1("zhou");
- stu1.m_total = 20;
- stu1.show();
- Student stu2("dong");
- stu2.m_total = 30;
- stu2.show();
- stu1.show();
- return 0;
- }
class Student{
private:
char*m_name;
int id;
float score;
public:
void setname(char *name,)
{
m_name = name;
}
void say()
{
cout<<m_name<<endl;
}
}
类里面的函数在代码段上,不再栈上所以sizeof的值是栈上变量占的长度
Student stu;
Student *ptr= new Student;
sizeof(stu) = 12;
sizeof(ptr) = 4; 指针4个字节
sizeof(*ptr) = 12;
sizeof(Student) = 12;
见笔记本图片
private 变量只能类里面的函数可以调用,类外面的
c++的特性:封装,继承,多态
class Student{
public: //没有public九默认为private
char *m_name;
void say()
{
cout<<"name = "<<m_name<<endl;
}
};
也可以写为
class Student{
public:
char *m_name;
void say();
};
void Student::say()
{
cout<<"name = "<<m_name<<endl;
}
int main()
{
Student stu1; //这是在栈上定义的;不能有()
stu1.m_name = "zhou";
stu1.say();
Student *ptr = new Student(); //这是在堆上;有无括号都行
ptr->m_name = "dong";
delete ptr;
}
2.
构造函数
class Carea{
private:
int length;
int width;
public:
Carea(int a,int b); //构造函数与类名相同,没有类型和返回值
int area();
};
//这边冒号后面的复制顺序与类里面的变量定义顺序有关
//如:int a = 10;
Carea::Crarea(int a):width(a),length(width){}
结果是length= 231223(垃圾值),width= 10
Carea::Carea(int a,int b) //或者写成Carea::Carea(int a,int b):length(a),width(b){cout<<"width--length"<<endl;}
{
length = a;
width = b;
cout<<"width--length"<<endl;
}
int Carea::area()
{
return (width * length);
}
int main()
{
Carea are1(30,20); //定义类are1的时候同时赋值
cout<<"area = "<<are1.area<<endl;
return 0;
}
- 我的第二节C语言课
- 第二课 C语言
- C语言第二课
- Linux C第二课
- C语言第二课
- 第二课、C简介
- C语言第二课练习
- C初学者的第二课
- C语言 第二节课知识点总结 鲍俊达
- 第二周第二节课
- C语言也能干大事第二节
- 20171104c语言第二节总结
- 2017.12.04 c语言第二节
- C 语言第二课----数据类型、常量、变量
- 小小君的C语言第二课
- 第二十四课 C API概述
- 第二十六课 从Lua调用C
- C语言第二课 数字的运算
- ClassLoader以及双亲委托模式
- 在 SQLite3 中使用回调函数
- php 调用java php-java-bridge
- POJ_3420_Quad Tiling
- ADXL345串口输出
- c++第二节课
- 闭包
- 为什么中国的程序员总被称为码农?
- C#快速入门
- PAT程序设计考题——甲级1027(Colors in Mars ) C++实现
- JAVA学习日记---Thinking in Java学习笔记,第5章总结
- C++ #define后带括号与不带括号的区别
- Glide 4.0
- TreeMap的put()和delete()详解