C++ 类 & 对象 技术教程文章

C++开发人脸性别识别教程(5)——通过FaceRecognizer类实现性别识别【代码】【图】

在之前的博客中已经解决了人脸检测的问题,我们计划在这篇博客中介绍人脸识别、性别识别方面的相关实现方法。其实性别识别和人脸识别本质上是相似的,因为这里只是一个简单的MFC开发,主要工作并不在算法研究上,因此我们直接将性别识别视为一种特殊的人脸识别模式。人脸识别可能需要分为几十甚至上百个类(因为有几十甚至上百个人),而性别识别则是一种特殊的人脸识别——只有两个类。一、基本工具通过OpenCv进行性别识别的基本工...

C++ Primer Plus学习笔记之继承类的初始化顺序

C++ Primer Plus学习笔记之继承类的初始化顺序基类的构造函数,析构函数和操作符函数operator=是不能被派生类继承的;那么,当创建一个派生类对象时,怎样调用基类的构造函数对基类的数据进行初始化呢???答案是:构造函数执行时遵行先兄长(基类),再客人(对象成员),后自己(派生类)的顺序;另一方面,执行析构函数时,先执行派生类的析构函数,再执行基类的析构函数。原因是,对基类的破坏隐含了对派生类的破坏,所以派生类的析...

C++ 对象构造顺序【代码】

原理:先父母,再成员,后自己 注意:可以结合默认参数的构造函数(相当于同时提供了有参构造函数和无参构造函数) #include <iostream>#include <string>using namespace std;class Obj{ string ms;public: Obj(string s="hello Obj") { cout << "Obj(string s) : " << s << endl; ms = s; } ~Obj() { cout << "~Obj() : " << ms << endl; }};class Object{ string ms;pub...

c++ 基本数据类型

目录c++ 基本数据类型一、整型二、浮点型三、字符型四、布尔型五、无类型六、宽字符型类型修饰符c++ 基本数据类型一、整型short:范围: 2 << (2*8-1)int:范围:2 << (4*8-1)long:范围:2 << (8*8-1)二、浮点型float:范围:2 << (4*8-1)double:范围:2 << (8*8-1)三、字符型char:范围:2 << (1*8-1)四、布尔型bool:范围:2 << (2*8-1)五、无类型void六、宽字符型wchar_t类型修饰符signed: 有符号 unsigned: 无符号 short: 短 long: 长...

c++primer4 Chapter2变量和基本类型2.3

2.3 变量Exercise2.11#include <iostream>using namespace std;int main(){ cout<<"Enter base and exponent:"; int base,exp; cin>>base>>exp; int result=1; for (int cnc=0;cnc!=exp;++cnc) result*=base; cout<<base<<" raised to the power of "<<exp<<" : "<<result<<endl; return 0;}变量初始化规则:内置类型变量的初始化,在函数体外定义的变量都初始化成0,在函数体内定义的内置类型变量不进行自动初始化。类类...

C++_针对char 字符类型cout的三种输出情况(++ch 和 ch+1 和 ch++)难点加重点【代码】【图】

1.++ch,代表字符+1输出,比如输入是a,那么输出是b 1 #include<iostream>2usingnamespace std;3int main()4{5char ch;6 cout << "输入,我将重复\n";7 cin.get(ch);8while (ch != ‘.‘) //表示输入以点号结束 9 { 10if (ch == ‘\n‘) //判断输入流中的字符是否为换行符11 cout << ch; 12else13 cout << ++ch;//将ch往后加1输出字符14 cin.get(ch); //将输入流中的字符赋给ch15 ...

C++ 关于字符串的特殊读入和分割问题 *非常重要,基本囊括string相关的输入输出和类型转换问题【代码】【图】

后续在做题时的时候遇到了一个从文件里去读取一串逗号分隔的double数字,并排序的问题; 还是挺操蛋的一道题,用直接读入在分割的方法贼麻烦,所以还是要寻求简单的的库函数和Cpp11特性来进行解决; 查阅相关blog,简单聊一下相关的问题; 其实最主要的有两个问题:1.如何读入?能不能一次分割得到string;2.如果将存放小数的string转换成double; 针对于第一个问题,找到了两种方法: 其一:利用getline的重载形式,这是自己第一...

c++类内存分布解析【代码】【图】

首先使用Visual Studio工具查看类的内存分布,如下: 先选择左侧的C/C++->命令行,然后在其他选项这里写上/d1 reportAllClassLayout,它可以看到所有相关类的内存布局,如果写上/d1 reportSingleClassLayoutXXX(XXX为类名),则只会打出指定类XXX的内存布局。近期的VS版本都支持这样配置。下面可以定义一个类,像下面这样:1 class Base 2 { 3 int a; 4 int b; 5 public: 6 void CommonFunction(); 7 };然后编译一下...

C++STL 预定义函数对象和函数适配器【代码】【图】

预定义函数对象和函数适配器预定义函数对象基本概念:标准模板库STL提前定义了很多预定义函数对象,#include <functional> 必须包含。1使用预定义函数对象: void main() {plus<int> intAdd;int x = 10;int y = 20;int z = intAdd(x, y); //等价于 x + y cout << z << endl;plus<string> stringAdd;string myc = stringAdd("aaa", "bbb");cout << myc << endl;vector<string> v1;v1.push_back("bbb");v1.push_back("aaa");v1.push_...

C++设计实现一个不能被继承的类【代码】

C++不同于Java,Java中被final关键字修饰的类不能被继承,C++能实现不被继承的类,但是需要自己实现。  为了使类不被继承,最好的办法是使子类不能构造父类的部分,此时子类就无法实例化整个子类。在C++中,子类的构造函数会自动调用父类的构造函数,子类的析构函数也会自动的调用父类的析构函数,所以只要把类的构造函数和析构函数都定义为private()函数,那么当一个类试图从他那儿继承时,必然会由于试图调用构造函数、析构函数...

C++第四课:类的使用(二)[个人见解]【代码】

前面说到C++类的名字自定义要有含义,成员函数名也同样如此。一个好的程序员除了让自己能看懂代码外,那是能力,也能让别人看懂,那是本事。我们来看第一个特性:继承!什么是继承?小编不说概念性的定义,先举两个例子:1、你的身体流淌着的是父母的血统。2、你能学到老师的知识。能看出什么来?自己体会。那么在C++中如何继承呢?我们再创建一个类Teacher.h和Teacher.cpp两个文件。Teacher.h:#ifndef __Teacher_h__ #defin...

C++习题 对象转换(定义一个Teacher(教师)类(教师号,姓名,性别,薪金)和一个Student(学生)类(学号,姓名,性别,成绩)编写程序,将一个Student对象(学生)转换为Teacher(教师)类。【代码】【图】

Description定义一个Teacher(教师)类(教师号,姓名,性别,薪金)和一个Student(学生)类(学号,姓名,性别,成绩),二者有一部分数据成员是相同的,num(号码),name(姓名),sex(性别)。编写程序,将一个Student对象(学生)转换为Teacher(教师)类,只将以上3个相同的数据成员移植过去。可以设想为: 一位学生大学毕业了,留校担任教师,他原有的部分数据对现在的教师身份来说仍然是有用的,应当保留并成为其教师数据的一部分。Inp...

c++对象模型研究3:数据

开始前先看看class X {}; class Y:public virtual X {}; class Z:public virtual X {}; class A:public Y,public Z {}; 上述X,Y,Z,A中没有任何一个class内含明显的数据,其间只表示了继承关系。 按照书上的例子sizeof X = 1 sizeof Y = 8 sizeof Z = 8 sizeof A = 12译注是sizeof X = 1 sizeof Y = 4 sizeof Z = 4 sizeof A = 8 先看X,事实上并不是空的,编译器会安插进去一个char。使得这个class的对象在内存中配置独一无二的...

c++,类的组合【代码】

1. 在A类中以B类的对象作为成员变量,称为类的组合(composition)。2. 在组合时,一般在A类的构造函数初始化列表中要初始化B类(会调用B类的一个构造函数), 如果没有初始化B类,则会调用B类中可以不传参数的构造函数。#include <iostream> usingnamespace std; #include <string> //--------------------------------------class A { public:int m_ax ;int m_ay ;A();A(int val,int vy); }; A::A() {} A::A(int vx,int vy) {this...

C++中的类型识别【代码】【图】

文章参考“狄泰视频”在面向对象中可能出现下面的情况:  --基类指针指向子类对象  --基类引用,成为子类对象的别名Base* p = new Derived();Base& r = *p;这里涉及动态类型和静态类型;静态类型:变量(对象)自身的类型动态类型:指针(引用)所指向的对象的实际类型 void test(Base* b){  Derived* d = static_cast<Derived*>(b);//危险的类型转换}这里的基类指针是否可以强制转换为子类指针,取决于指针实际指向的类型;...

C++类与内存【图】

在C++类成员中引用,常量,静态变量,静态函数等,它们被分配在内存的那个地方,有哪些特性。1.常量和引用必须重载构造函数进行初始化,否则就会编译失败, new 的时候再堆上,直接创建在栈上。值得说明的是:C++类成员常量与C语言常量一样,通过指针可以修改其的值。类的外部常量一旦初始化以后,不会读内存,从代码区的符号表自动生成,2.静态变量,分配在静态区域,其属于整个类,而不属于具体对象。3.类的成员函数都在代码区,...

c++中的函数对象【代码】

头文件wuyong.h:#pragma once #include<iostream> usingnamespace std; template<typename T> struct ismulti {T a;ismulti(const T& b):a(b){}booloperator() (const T& c) const//重载函数调用操作符() {return ((c % a) == 0);} };View Code源文件:#include"wuyong.h" #include<vector> #include<algorithm> int main() {vector<int> v1;for (int i = 33; i < 100; i++)v1.push_back(i);ismulti<int> ha(4);//定义一个 函...

C++---类成员变量定义为引用【代码】

摘要:类成员变量是可以定义为引用类型的,但是我们需要注意一下用法note1:在类中定义引用变量, 必须要在初始化列表中初始化该成员变量(const 类型数据成员也必须在初始化列表中进行初始化)#include <iostream> usingnamespace std;class A { public:A(int k):a(n){ // 必须要在初始化列表中进行初始化n = k;cout << a <<endl;}intget() const {return n+1;} private:int n;int &a; };int main(){A a(10);cout << a.get() <<en...

C++@类的静态成员变量和静态成员函数【代码】

参考:http://blog.csdn.net/morewindows/article/details/6721430http://www.cnblogs.com/lzjsky/archive/2011/01/24/1943199.html分析Qt程序时,碰到下面代码。 QString str = QString("QFrame#avatar{border-image:url(%1.jpg)}").arg( QString::number(i) ); 静态成员变量静态成员函数概念定义被所有的类的对象所共享的变量。即此变量是属于这个类的,它只被存储一份供所有的对象使用。不访问对象的任何数据,但是又是对象的成...

C++ 初始化形式、变量初始化规则、类构造函数的初始化列表

类构造函数的初始化列表,举例一个对象的构造分两部分,首先是分配空间,然后初始化。只要有对象生成,不管是以什么形式生成,都会调用构造函数进行初始化。然后下面有个例子,在蓝色区域Big类的复制构造函数中,使用初始化列表进行成员的初始化(方法1)没有问题,而如果不使用初始化列表、直接在函数里用里面注释掉的代码(方法2)则会报错:Base类没有合适的构造函数。// W3-课程作业2-4.cpp : Defines the entry point for the...