-
对象实例化:栈和堆的取值方式。查看全部
-
A. 如果没有自定义的析构函数则系统产生一个析构函数。 B. 堆中对象销毁时,析构函数被自动调用。 C. 栈中对象销毁时,也自动调用析构函数。 D. 析构函数没有参数,也没有返回值。 不管是堆中对象还是栈中对象销毁时都会自动调用析构函数查看全部
-
街道图了。 不管是以堆实例化一个对象,还是以栈实例化一个对象,都会在程序结束时调用析构函数;当调用拷贝函数时,程序结束后也会调用其相应的析构函数。用堆实例化对象,析构函数会在所有进程结束也就是窗口关闭后自动调用;而用栈实例化的对象,在用delete语句销毁时,自动调用析构函数;调用拷贝构造函数的对象也是同堆实例化的对象一样在窗口关闭之时自动调用析构函数 析构函数在栈、堆中都能被调用,但是在堆中不会自动调用,必须手动释放内存,否则会造成内存泄漏查看全部
-
拷贝构造函数的参数是确定的,不能重载 当没有自定义的拷贝构造函数时,系统自动生成一个拷贝构造函数 通过同类型的对象实例化另外的对象时,自动调用拷贝构造函数 拷贝构造函数没有返回值查看全部
-
构造函数: 1:无参构造函数(所有的构造函数都是默认构造函数) 2:有参构造函数(参数带默认值的构造函数,若所有的参数都带有默认值则为默认构造函数)(参数无默认值构造函数)查看全部
-
初始化列表 构造函数后用冒号隔开 对于多个数据成员赋值的时候要用逗号隔开 赋值的时候要用括号 而不用等号 举个例子 class Student { public: Student(): m_strName("jim"),m_iAge(10){} private: string m_strName; int m_iAge; } 主意: 1、初始化列表先于构造函数执行 2、初始化列表只能用于构造函数 3、初始化列表可以同时初始化多个数据成员,并且效率高,速度快,尽量用初始化列表的形式完成数据成员的初始化。 初始化列表的必要性: const修饰的数据成员可以使用初始化列表赋值,用构造函数赋值会报错。查看全部
-
string类型查看全部
-
string需要注意 的查看全部
-
string 的常用操作查看全部
-
string类型的初始化查看全部
-
string 类型的定义查看全部
-
#include <iostream> #include <string> using namespace std; /** * 定义类:Student * 数据成员:m_strName * 数据成员的封装函数:setName()、getName() */ class Student { public: // 定义数据成员封装函数setName() void setName(string name) { m_strName=name; } // 定义数据成员封装函数getName() void getName() { cout<<m_strName; } //定义Student类私有数据成员m_strName private: string m_strName; }; int main() { // 使用new关键字,实例化对象 Student *str = new Student; // 设置对象的数据成员 str->setName("慕课网"); // 使用cout打印对象str的数据成员 str->getName(); // 将对象str的内存释放,并将其置空 delete str; str=NULL; return 0; }//在main函数中对象不能直接访问类中成员变量。查看全部
-
在类中定义的成员函数全部默认为内联函数。可以显示加上 inline 标识符,或者不加。在类中声明的成员函数,如果没加inline,则在类外定义该成员函数时加了inline,该成员函数也为内联函数。 1.类内定义的函数优先选择编译为内联函数 2.分文件类外定义:将类的定义放在c++头文件中,将类外定义的函数放在cpp文件中,并加上类的头文件查看全部
-
从堆中申请空间和释放,以及申请失败的处理。查看全部
-
string常用操作查看全部
举报
0/150
提交
取消