![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
ulaulaula
这个作者很懒,什么都没留下…
展开
-
指向const 对象的指针
指向const 对象的指针可以给指向non-const对象的指针初始化,反之不行。从逻辑上分析,指向non-const对象的指针意味着可修改对象,如果强行给其赋值一个const 对象指针,那么如果可以,就会导致通过non-const对象指针修改const对象,这显然违背了逻辑。int a = 1;const int *p = &a;int *p2 = &a;p = p2; //没有任何问题p2 = p; //编译报错...原创 2022-04-26 05:50:33 · 103 阅读 · 1 评论 -
拷贝构造函数与拷贝复制函数
当类的成员变量含有指针时,必须编写拷贝构造函数与拷贝赋值函数,否则可能发生内存泄露。#pragma once#ifndef STRING_H_#define STRING_H_#include <string.h>#include <ostream>#define _CRT_SECURE_NO_WARNINGSclass String{private: char* m_data;public: char* get_c_data()const { retu原创 2022-04-22 20:51:59 · 723 阅读 · 0 评论 -
返回值 VS r返回引用 以及 传引用 VS 传值
准则:尽量使用传引用f而不是直接传递对象目的:减少开销,传引用相当于使用原对象,而传递对象需要拷贝一份。返回值是引用还是对象要看情况而定:不能使用返回引用的情况是:当返回的是一个局部对象时。#ifndef COMPLEX_H_#define COMPLEX_H_#include <ostream>class complex{public: inline double real()const { return re; } inline double imag原创 2022-04-21 19:29:34 · 176 阅读 · 0 评论 -
C++构造函数的注意事项
Ctor():a(aa),b(bb){}ctor(){ a = aa; b = b;}使用参数列表对成员变量进行初始化,而不是在构造函数体内赋值,这样可以减少开销。Ctor(int a= 0, int b =0){}Ctor(){}无参构造函数与所有参数都有默认值的构造函数不能同时存在无参构造函数与所有参数都有默认值的构造函数不能同时存在,因为编译器无法确认用户到底想调用哪一个构造函数。...原创 2022-04-20 21:14:12 · 699 阅读 · 0 评论 -
头文件(防卫式声明)
在C/C++头文件中,必须进行防卫式声明,防止头文件重复包含问题。#ifndef __XXXXX__H#define __XXXXX__Hcode block;#endif如果是第一次包含该头文件,则定义宏__XXXXX__H,并包含代码,如果是第二次包含,条件编译指令不通过,不再重复包含。...原创 2022-04-20 21:07:57 · 195 阅读 · 0 评论 -
c++ 虚函数的作用
C++ 通过关键字virtual 声明一个虚函数,在派生类里重写这个虚函数,从而实现通过父类指针调用子类函数的目的,以实现多态。下面通过代码验证:#include <iostream>class Base{ public: virtual void print() { std::cout<<"virtual base print"<<std::endl; } void non_print() { std::cout<<"non v原创 2022-04-19 10:13:53 · 976 阅读 · 0 评论